package com.soushin.mvpdemo.Utils;

import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.soushin.mvpdemo.R;

import java.util.List;

/**
 * 图片选择工具类
 *
 * @auther SouShin
 * @time 2019/1/9 13:54
 */
public class PictureUtils {

//  包括裁剪和压缩后的缓存，要在上传成功后调用，注意：需要系统sd卡权限
//  PictureFileUtils.deleteCacheDirFile(MainActivity.this);

    /**
     * 启动相册并拍照
     * @param activity 上下文
     * @param num 最大选择数量
     * @param isCrop  是否裁剪
     * @param selectionPicture  已选图片数组
     */
    public static void openGallery(@NonNull Activity activity, int num, boolean isCrop, @Nullable List<LocalMedia> selectionPicture) {
        PictureSelector.create(activity)
                .openGallery(PictureMimeType.ofImage())
                .maxSelectNum(num)// 最大图片选择数量 int
                .imageSpanCount(3)// 每行显示个数 int
                .selectionMode(num==1?PictureConfig.SINGLE:PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
                .previewImage(true)// 是否可预览图片 true or false
                .isCamera(false)// 是否显示拍照按钮 true or false
                .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
                .sizeMultiplier(0.4f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
                .enableCrop(isCrop)// 是否裁剪 true or false
                .compress(true)// 是否压缩 true or false
                .hideBottomControls(true)// 是否显示uCrop工具栏，默认不显示 true or false
                .isGif(false)
                .freeStyleCropEnabled(num==1)// 裁剪框是否可拖拽 true or false
                .isDragFrame(num==1)// 是否可拖动裁剪框(固定)
                .circleDimmedLayer(num==1)// 是否圆形裁剪 true or false
                .showCropFrame(num!=1)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false   true or false
                .showCropGrid(num!=1)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false    true or false
                .openClickSound(false)// 是否开启点击声音 true or false
                .selectionMedia(selectionPicture)// 是否传入已选图片 List<LocalMedia> list
                .previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
                .cropCompressQuality(80)// 裁剪压缩质量 默认90 int
                .minimumCompressSize(100)// 小于100kb的图片不压缩
                .synOrAsy(false)//同步true或异步false 压缩 默认同步
                .withAspectRatio(1, 1)// 裁剪比例 如16:9 3:2 3:4 1:1 可自定义
                .rotateEnabled(true) // 裁剪是否可旋转图片 true or false
                .scaleEnabled(true)// 裁剪是否可放大缩小图片 true or false
                .forResult(PictureConfig.CHOOSE_REQUEST);
    }

    /**
     * 单独启动拍照或视频 根据PictureMimeType自动识别
     * @param activity 上下文
     * @param isCrop  裁剪
     * @param isCircle  圆形裁剪
     */
    public static void openCamera(Activity activity,boolean isCrop,boolean isCircle) {
        PictureSelector.create(activity)
                .openCamera(PictureMimeType.ofImage())
                .imageFormat(PictureMimeType.PNG)// 拍照保存图片格式后缀,默认jpeg
                .enableCrop(isCrop)// 是否裁剪 true or false
                .compress(true)// 是否压缩 true or false
                .hideBottomControls(true)// 是否显示uCrop工具栏，默认不显示 true or false
                .freeStyleCropEnabled(isCircle)// 裁剪框是否可拖拽 true or false
                .isDragFrame(isCircle)// 是否可拖动裁剪框(固定)
                .circleDimmedLayer(isCircle)// 是否圆形裁剪 true or false
                .showCropFrame(!isCircle)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false   true or false
                .showCropGrid(!isCircle)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false    true or false
                .openClickSound(false)// 是否开启点击声音 true or false
                .cropCompressQuality(80)// 裁剪压缩质量 默认90 int
                .minimumCompressSize(100)// 小于100kb的图片不压缩
                .synOrAsy(false)//同步true或异步false 压缩 默认同步
                .rotateEnabled(true) // 裁剪是否可旋转图片 true or false
                .scaleEnabled(true)// 裁剪是否可放大缩小图片 true or false
                .forResult(PictureConfig.CHOOSE_REQUEST);
    }

    /**
     * 图片预览
     *
     * @param activity
     * @param position
     * @param selectList
     */
    public static void openProview(Activity activity, int position, List<LocalMedia> selectList) {
        PictureSelector.create(activity)
                .themeStyle(R.style.picture_default_style)
                .openExternalPreview(position, selectList);
    }

    /**
     * 预览视频
     *
     * @param activity
     * @param videoPath
     */
    public static void openVideo(Activity activity, String videoPath) {
        PictureSelector.create(activity).externalPictureVideo(videoPath);
    }



}
